home *** CD-ROM | disk | FTP | other *** search
/ Amiga Game-Power / Amiga Game-Power.iso / pd mix i / kampf um eriador / kue.512kbyte (.txt) < prev    next >
AmigaBASIC Source Code  |  1994-05-20  |  25KB  |  838 lines

  1. ' *****************************************************
  2. ' *                                                   *
  3. ' *          K a m p f   u m   E r i a d o r          *
  4. ' *         ---------------------------------         *
  5. ' *                                                   *
  6. ' *         Programmiert im August 1987 von :         *
  7. ' *                                                   *
  8. ' *         Ralf Böwing          Roland Hartz         *
  9. ' *         Platanenweg 4        Platanenweg 8        *
  10. ' *         4425 Billerbeck      4425 Billerbeck      *
  11. ' *                                                   *
  12. ' *****************************************************
  13.  
  14.  
  15. REM *** Daten initialisieren ***
  16.  
  17.  
  18.   LOCATE 10,25:PRINT "Bitte warten - ich lade Daten..."
  19.  
  20.   DEFINT zx,zy,bldnr,bldnralt,turn
  21.   DIM fw(15,2)
  22.   DIM SHARED spar%(38,38),fig%(38,38),oo%(9),ab%(9),ob%(206,24),leer%(206)
  23.   DIM SHARED st%(94),ma%(94),wa%(94),bi%(94),nam$(17),fb%(6),fganz(1)
  24.   DIM SHARED beweg%(94)
  25.   
  26.   ON ERROR GOTO fehler
  27.   
  28.   OPEN "Eriador.Grafik" FOR INPUT AS 1
  29.     FOR j=0 TO 24
  30.       FOR i=0 TO 206
  31.         ob%(i,j)=CVI(INPUT$(2,1))
  32.       NEXT i
  33.     NEXT j
  34.   CLOSE 1
  35.  
  36.   FOR i=0 TO 206:leer%(i)=ob%(i,18):NEXT i
  37.  
  38.   GOSUB moveclr 
  39.   fganz(0)=47:fganz(1)=47
  40.   
  41.   RESTORE zofb
  42.   FOR i=0 TO 6:READ fb%(i):NEXT i  
  43. zofb:
  44.   DATA 7,4,5,14,15,2,15
  45.   
  46.  
  47.   OPEN "Eriador.Spiel" FOR INPUT AS 1
  48.   GOSUB loadcheck
  49.   IF loadjn=0 THEN CLOSE 1:GOTO okw
  50.   spm=1:loaded=1
  51.   FOR j=0 TO 38
  52.     FOR i=0 TO 38
  53.       spar%(i,j)=CVI(INPUT$(2,1))
  54.       fig%(i,j)=CVI(INPUT$(2,1))
  55.     NEXT i
  56.   NEXT j
  57.   FOR i=1 TO 94
  58.     st%(i)=CVI(INPUT$(2,1))
  59.     beweg%(i)=CVI(INPUT$(2,1))
  60.   NEXT i
  61.   turn=CVI(INPUT$(2,1))
  62.   FOR i=0 TO 1
  63.     cx%(i)=CVI(INPUT$(2,1))
  64.     cy%(i)=CVI(INPUT$(2,1))
  65.     mm%(i)=CVI(INPUT$(2,1))
  66.   NEXT    
  67.   CLOSE 1
  68.  
  69. okw:      
  70.   IF spm<>1 THEN
  71.     OPEN "Eriador.Spielfeld" FOR INPUT AS 1
  72.       FOR j=0 TO 38
  73.         FOR i=0 TO 38
  74.           spar%(i,j)=CVI(INPUT$(2,1))
  75.         NEXT i
  76.       NEXT j
  77.     CLOSE 1  
  78.   END IF
  79.   
  80.   RESTORE bko    
  81.   FOR i=1 TO 9
  82.     READ oo%(i):READ ab%(i)
  83.   NEXT i  
  84. bko:
  85.   DATA 0,26,13,26,26,26,0,13,13,13,26,13,0,0,13,0,26,0
  86.  
  87.   RESTORE figpos:zaehl=0
  88.   FOR j=0 TO 17
  89.     READ anz
  90.     FOR i=1 TO anz
  91.       zaehl=zaehl+1
  92.       READ x,y:bi%(zaehl)=j
  93.       IF spm<>1 THEN fig%(x,y)=zaehl
  94.     NEXT i
  95.     READ nam$(j)
  96.   NEXT j
  97.  
  98. figpos:
  99.   DATA 9,8,9,10,9,9,8,18,2,20,2,19,1,20,11,22,11,21,10,"Axtmann"
  100.   DATA 9,9,9,8,8,10,8,19,2,18,1,20,1,21,11,20,10,22,10,"Schwertkämpfer"
  101.   DATA 6,7,7,11,7,17,0,21,0,19,9,23,9,"Legionär"
  102.   DATA 6,7,9,11,9,17,2,21,2,19,11,23,11,"Ritter"
  103.   DATA 6,7,8,11,8,17,1,21,1,19,10,23,10,"Schütze"
  104.   DATA 3,9,7,19,0,21,9,"Belag.Mannsch."
  105.   DATA 6,8,7,10,7,18,0,20,0,20,9,22,9,"Adler"
  106.   DATA 1,0,0,"König des Lichts"
  107.   DATA 1,4,3,"Magier"
  108.   
  109.   DATA 9,8,35,10,35,9,36,19,33,21,33,20,34,30,30,32,30,31,31,"Keulenmann"
  110.   DATA 9,9,35,8,36,10,36,20,33,19,34,21,34,31,30,30,31,32,31,"Schwertkämpfer"
  111.   DATA 6,7,37,11,37,18,35,22,35,29,32,33,32,"Legionär"
  112.   DATA 6,7,35,11,35,18,33,22,33,29,30,33,30,"Ritter"
  113.   DATA 6,7,36,11,36,18,34,22,34,29,31,33,31,"Schütze"
  114.   DATA 3,9,37,20,35,31,32,"Belag.Mannsch."
  115.   DATA 6,8,37,10,37,19,35,21,35,30,32,32,32,"Drachen"      
  116.   DATA 1,38,38,"König d. Dunkels"
  117.   DATA 1,35,34,"Magier"    
  118.  
  119.   RANDOMIZE TIMER
  120.   FOR i=1 TO 9
  121.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+5:st%(i+47)=INT(RND(1)*4)+5
  122.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  123.   NEXT i
  124.   FOR i=10 TO 18
  125.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+7:st%(i+47)=INT(RND(1)*4)+7
  126.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  127.   NEXT i      
  128.   FOR i=19 TO 24
  129.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+9:st%(i+47)=INT(RND(1)*4)+9
  130.     ma%(i)=3:ma%(i+47)=3:wa%(i)=2:wa%(i+47)=2
  131.   NEXT i      
  132.   FOR i=25 TO 30
  133.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+11:st%(i+47)=INT(RND(1)*4)+11
  134.     ma%(i)=4:ma%(i+47)=4:wa%(i)=2:wa%(i+47)=2
  135.   NEXT i      
  136.   FOR i=31 TO 36
  137.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+7:st%(i+47)=INT(RND(1)*4)+7
  138.     ma%(i)=3:ma%(i+47)=3:wa%(i)=3:wa%(i+47)=3
  139.   NEXT i      
  140.   FOR i=37 TO 39
  141.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+4:st%(i+47)=INT(RND(1)*4)+4
  142.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  143.   NEXT i      
  144.   FOR i=40 TO 45
  145.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+13:st%(i+47)=INT(RND(1)*4)+13
  146.     ma%(i)=5:ma%(i+47)=5:wa%(i)=2:wa%(i+47)=2
  147.   NEXT i      
  148.   IF spm<>1 THEN st%(46)=INT(RND(1)*4)+12:st%(93)=INT(RND(1)*4)+12
  149.   ma%(46)=3:ma%(93)=3:wa%(46)=1:wa%(93)=1
  150.   IF spm<>1 THEN st%(47)=INT(RND(1)*4)+25:st%(94)=INT(RND(1)*4)+25        
  151.   ma%(47)=4:ma%(94)=4:wa%(47)=13:wa%(94)=13
  152.  
  153.   SCREEN 1,640,256,4,2
  154.   WINDOW 2,"",,0,1
  155.  
  156.   OPEN "Eriador.Sprite" FOR INPUT AS 1
  157.     OBJECT.SHAPE 1,INPUT$(LOF(1),1)
  158.   CLOSE 1 
  159.   OBJECT.X 1,639:OBJECT.Y 1,255
  160.  
  161.  
  162.   DECLARE FUNCTION Move& LIBRARY
  163.   DECLARE FUNCTION OpenDiskFont& LIBRARY
  164.  
  165.   LIBRARY "graphics.library"
  166.   LIBRARY "diskfont.library"
  167.  
  168.   Diskfont "garnet",16
  169.  
  170.   GOSUB farbreset
  171.   Map=0:einl=0:GOSUB TitleScreen
  172.   GOTO Spiel
  173.  
  174.  
  175. REM *** Unterprogramme und Subroutinen ***      
  176.   
  177.   SUB Diskfont (font$,height%) STATIC
  178.     SHARED strFont&
  179.     prefs%=96
  180.     font0$=font$+".font"+CHR$(0)
  181.     IF strFont&<>0 THEN CALL CloseFont (strFont&)
  182.     textAttr&(0)=SADD(font0$)
  183.     textAttr&(1)=height%*2^16+prefs%
  184.     strFont&=OpenDiskFont& (VARPTR(textAttr&(0)))
  185.     IF strFont&<>0 THEN CALL SetFont(WINDOW(8),strFont&)
  186.   END SUB
  187.     
  188.   SUB Shadow (text$,spacing%,depth%,height%,mode%,x%,y%) STATIC
  189.     IF mode%=0 THEN
  190.       crsx%=POS(0)*height%
  191.       crsy%=(CSRLIN)*8
  192.     ELSE 
  193.       crsx%=x%:crsy%=y%
  194.     END IF
  195.     IF crsy%<8 THEN crsy%=8
  196.     CALL SetDrMd&(WINDOW(8),0)
  197.     E&=Move&(WINDOW(8),crsx%+depth%,crsy%+depth%)
  198.     COLOR 9,0
  199.     PRINT text$;
  200.     COLOR 11,0
  201.     E&=Move&(WINDOW(8),crsx%,crsy%)
  202.     PRINT text$;
  203.   END SUB
  204.   
  205.   SUB Mapon (bnr%) STATIC
  206.     SHARED zx,zy,mpjn,bldnralt
  207.     OBJECT.OFF 1
  208.     LINE (176,0)-(177,236),1,bf:LINE (177,236)-(639,236),1
  209.     LINE (0,0)-(172,236),1,b:LINE(1,0)-(171,236),1,b
  210.     LINE (0,238)-(639,253),1,b:LINE(1,238)-(638,253),1,b
  211.  
  212.     FOR i%=ab%(bnr%) TO ab%(bnr%)+12
  213.       ii%=(i%-ab%(bnr%))*18+1
  214.       FOR j%=oo%(bnr%) TO oo%(bnr%)+12                   
  215.         jj%=(j%-oo%(bnr%))*35+180
  216.         IF fig%(j%,i%)<>0 THEN PUT (jj%,ii%),ob%(0,bi%(fig%(j%,i%))),PSET:GOTO zxy
  217.         IF spar%(j%,i%)=0 THEN PUT (jj%,ii%),leer%,PSET:GOTO zxy 
  218.         PUT (jj%,ii%),ob%(0,spar%(j%,i%)+18),PSET        
  219. zxy:  NEXT j%
  220.     NEXT i%   
  221.  
  222.     mpjn=1:Zeigerset zx,zy,bnr%:OBJECT.ON 1
  223.   END SUB              
  224.  
  225.   
  226.   SUB warten (t%) STATIC
  227.     m=MOUSE(0)
  228.     t!=TIMER
  229. jgfh:
  230.     IF TIMER<=t!+t% AND MOUSE(0)=0 THEN jgfh    
  231.   END SUB
  232.  
  233.   SUB Zeigerset (x%,y%,bnr%) STATIC
  234.     OBJECT.X 1,(x%-oo%(bnr%))*35+194
  235.     OBJECT.Y 1,(y%-ab%(bnr%))*18+11
  236.   END SUB              
  237.  
  238.   SUB mclr (y%,x%) STATIC
  239.     LOCATE y%,x%
  240.     crsx%=POS(0)*9:crsy%=(CSRLIN)*8
  241.     LINE (crsx%,crsy%)-STEP(18,12),0,bf
  242.   END SUB
  243.  
  244. fehler:
  245.   IF ERR=53 THEN CLOSE 1:RESUME okw 
  246.   PRINT "Programmfehler !"
  247.   END
  248.     
  249. farbreset:
  250.   RESTORE farben:colz=15
  251.   FOR i=0 TO colz
  252.     FOR ii=0 TO 2
  253.       READ fw(i,ii)
  254.     NEXT ii
  255.   NEXT i
  256. farben:  
  257.   DATA 0,0,0,8,8,8,0,1,7,0,2,10
  258.   DATA 0,4,14,0,5,0,3,7,0,5,9,0
  259.   DATA 12,0,8,12,1,1,14,1,1
  260.   DATA 14,9,0,14,11,0,14,13,0,4,4,4,7,7,7
  261.   FOR i=0 TO colz
  262.     PALETTE i,fw(i,0)/15,fw(i,1)/15,fw(i,2)/15
  263.   NEXT  
  264.   RETURN
  265.  
  266. farbenaus:
  267.   FOR i=0 TO 15
  268.     PALETTE i,0,0,0
  269.   NEXT
  270.   RETURN
  271.   
  272. loadcheck:
  273.   CLS:LOCATE 6,17
  274.   PRINT "Es ist noch ein alter Spielstand gespeichert !"
  275.   LOCATE 8,17:PRINT "       Wünschen Sie, ihn fortzusetzen ?"
  276.   k$=UCASE$(INKEY$)
  277.   WHILE k$<>"J" AND k$<>"N"
  278.     k$=UCASE$(INKEY$)
  279.   WEND
  280.   IF k$="J" THEN
  281.     loadjn=1
  282.   ELSE
  283.     loadjn=0
  284.     CLOSE 1
  285.     KILL "Eriador.Spiel"
  286.   END IF
  287.   LOCATE 10,37:PRINT "Ok."
  288.   RETURN
  289.  
  290. groclear:
  291.   LINE (2,1)-(170,235),0,bf
  292.   RETURN
  293.   
  294. kleinclear:
  295.   LINE (2,239)-(637,253),0,bf
  296.   RETURN
  297.  
  298. tasten:  
  299.   k$=""
  300.   WHILE k$=""
  301.     k$=INKEY$
  302.   WEND  
  303.   IF k$>="1" AND k$<="9" AND bldnr=VAL(k$) THEN tasten
  304.   IF k$>="1" AND k$<="9" THEN bldnr=VAL(k$):zx=oo%(bldnr)+(zx MOD 13):zy=ab%(bldnr)+(zy MOD 13)::Mapon bldnr:GOTO tasten
  305.   IF k$=CHR$(13) AND (fig%(zx,zy)>=offs AND fig%(zx,zy)<=offs+46) AND beweg%(fig%(zx,zy))<2 THEN GOSUB genommen:RETURN
  306.  
  307.   IF UCASE$(k$)="Q" THEN
  308.     tza=15
  309.     RETURN
  310.   END IF
  311.   
  312.   IF k$=CHR$(28) AND zy>0 THEN
  313.     IF (zy MOD 13<>0) THEN 
  314.       zy=zy-1:Zeigerset zx,zy,bldnr 
  315.     ELSE
  316.       zy=zy-1:bldnr=bldnr+3:Mapon bldnr
  317.     END IF
  318.   END IF  
  319.  
  320.   IF k$=CHR$(29) AND zy<38 THEN 
  321.     IF ((zy+1) MOD 13<>0) THEN
  322.       zy=zy+1:Zeigerset zx,zy,bldnr 
  323.     ELSE
  324.       zy=zy+1:bldnr=bldnr-3:Mapon bldnr
  325.     END IF
  326.   END IF  
  327.  
  328.   IF k$=CHR$(30) AND zx<38 THEN 
  329.     IF ((zx+1) MOD 13<>0) THEN 
  330.       zx=zx+1:Zeigerset zx,zy,bldnr
  331.     ELSE 
  332.       zx=zx+1:bldnr=bldnr+1:Mapon bldnr
  333.     END IF
  334.   END IF
  335.  
  336.   IF k$=CHR$(31) AND zx>0 THEN 
  337.     IF (zx MOD 13<>0) THEN 
  338.       zx=zx-1:Zeigerset zx,zy,bldnr 
  339.     ELSE
  340.       zx=zx-1:bldnr=bldnr-1:Mapon bldnr
  341.     END IF
  342.   END IF
  343.   
  344.   IF k$=CHR$(139) THEN
  345.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1    
  346.     OBJECT.OFF 1
  347.     LINE (180,1)-(639,235),0,bf
  348.     LOCATE 6,1:Shadow "Legende :",9,1,9,0,0,0
  349.     LOCATE 9,1:Shadow "Ebene :",9,1,9,0,0,0:LINE (123,65)-(132,73),7,bf
  350.     LOCATE 11,1:Shadow "Wasser :",9,1,9,0,0,0:LINE (123,81)-(132,89),4,bf
  351.     LOCATE 13,1:Shadow "Wald :",9,1,9,0,0,0:LINE (123,97)-(132,105),5,bf 
  352.     LOCATE 15,1:Shadow "Gebirge :",9,1,9,0,0,0:LINE (123,113)-(132,121),14,bf
  353.     LOCATE 17,1:Shadow "Bauwerk :",9,1,9,0,0,0:LINE (123,129)-(132,137),15,bf
  354.     LOCATE 19,1:Shadow "Sumpf :",9,1,9,0,0,0:LINE (123,145)-(132,153),2,bf
  355.     LOCATE 22,1:Shadow "Helle Armee :",9,1,9,0,0,0:LINE(153,169)-(161,177),12,bf:CIRCLE (157,173),1,9
  356.     LOCATE 24,1:Shadow "Dunkle Armee :",9,1,9,0,0,0:LINE (153,185)-(161,193),3,bf:CIRCLE (157,189),1,9
  357.     FOR i%=0 TO 38
  358.     ii%=i%*6+1
  359.       FOR j%=0 TO 38  
  360.         jj%=j%*10+210
  361.         IF bi%(fig%(j%,i%))<9 THEN obf%=12 :ELSE obf%=3 
  362.         IF fig%(j%,i%)<>0 THEN
  363.           LINE (jj%,ii%)-STEP(8,4),obf%,bf
  364.           CIRCLE (jj%+4,ii%+2),1,9
  365.           GOTO abc
  366.         END IF
  367.         LINE (jj%,ii%)-STEP(8,4),fb%(spar%(j%,i%)),bf
  368. abc:  NEXT j%
  369.     NEXT i%
  370.         
  371.     LINE (338,1)-(339,233),9,b
  372.     LINE (468,1)-(469,233),9,b
  373.     LINE (210,78)-(598,78),9
  374.     LINE (210,156)-(598,156),9
  375.     
  376.     k$=INKEY$
  377.     WHILE k$<>" "
  378.       k$=INKEY$
  379.     WEND
  380.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  381.     LINE (180,1)-(639,235),0,bf
  382.     GOSUB groclear
  383.     Mapon bldnr
  384.   END IF  
  385.  
  386.   IF k$=CHR$(27) THEN
  387.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1    
  388.     OBJECT.OFF 1
  389.     LINE (180,1)-(639,235),0,bf
  390.     GOSUB groclear
  391.     LOCATE 11,34:Shadow "Möchten Sie das Spiel",9,1,9,0,0,0
  392.     LOCATE 13,32:Shadow "(a)bbrechen,   (s)peichern",9,1,9,0,0,0
  393.     LOCATE 15,35:Shadow "oder (f)ortführen ?",9,1,9,0,0,0
  394.     k$=UCASE$(INKEY$)
  395.     WHILE k$<>"A" AND k$<>"S" AND k$<>"F"
  396.       k$=UCASE$(INKEY$)
  397.     WEND
  398.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  399.     IF k$="A" THEN
  400.       WINDOW CLOSE 2:SCREEN CLOSE 1
  401.       SYSTEM
  402.     END IF
  403.     IF k$="S" THEN GOSUB speichern
  404.     LINE (180,1)-(639,235),0,bf
  405.     Mapon bldnr
  406.   END IF
  407.   RETURN
  408.  
  409. genommen:
  410.   SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  411.   PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  412.   zxalt=zx:zyalt=zy:REM Ursprungskoordinaten merken
  413.   ugrnd%=spar%(zx,zy):REM Untergrund merken
  414.   f%=fig%(zx,zy):zgw=0:mpjn=0:bldnralt=bldnr
  415.   GOSUB groclear
  416.   LOCATE 5,1:Shadow nam$(bi%(f%)),9,1,9,0,0,0
  417.   LOCATE 8,1:Shadow "Stärke   :",9,1,9,0,0,0:LOCATE 8,12:Shadow STR$(st%(f%)),9,1,9,0,0,0
  418.   LOCATE 10,1:Shadow "Reichweiten",9,1,9,0,0,0
  419.   LOCATE 12,1:Shadow "- Marsch :",9,1,9,0,0,0:LOCATE 12,12:Shadow STR$(ma%(f%)),9,1,9,0,0,0
  420.   LOCATE 14,1:Shadow "- Waffen :",9,1,9,0,0,0:LOCATE 14,12:Shadow STR$(wa%(f%)),9,1,9,0,0,0
  421.   LOCATE 17,1:Shadow "Verbl. Züge :",9,1,9,0,0,0
  422. E:  
  423.   mclr 16,15:LOCATE 17,14:Shadow STR$(ma%(f%)),9,1,9,0,0,0
  424.  
  425. tsabfr:  
  426.  k$=""
  427.   WHILE k$=""
  428.     k$=INKEY$
  429.   WEND
  430.   
  431.   IF k$=CHR$(127) THEN 
  432.     zgw=0:zx=zxalt:zy=zyalt:bgl=0
  433.     IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  434.     GOTO E
  435.   END IF
  436.   
  437.   IF k$=CHR$(13) THEN
  438.     SOUND 400,4.5,200,0:SOUND 410,4.5,200,1
  439.     IF (fig%(zx,zy)<>0 AND fig%(zx,zy)<>f%) THEN
  440.       beweg%(f%)=beweg%(f%)+1:tza=tza+1
  441.       GOSUB gefecht:warten(2):GOSUB groclear
  442.       IF mpjn=0 AND freundkill=0 THEN PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET        
  443.       RETURN
  444.     END IF  
  445.     IF (bi%(f%)<>8 AND bi%(f%)<>17) OR ((bi%(f%)=8 OR bi%(f%)=17) AND spar%(zx,zy)<>3) THEN
  446.       IF (bi%(f%)<>5 AND bi%(f%)<>14) OR ((bi%(f%)=5 OR bi%(f%)=14) AND spar%(zx,zy)<>4) THEN
  447.         IF fig%(zx,zy)<>f% THEN beweg%(f%)=beweg%(f%)+1:tza=tza+1
  448.         IF mpjn=0 THEN PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,ugrnd%+18),PSET
  449.         PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(f%)),PSET
  450.         fig%(zxalt,zyalt)=0:REM alten Platz löschen
  451.         fig%(zx,zy)=f%:REM neuen Platz besetzen
  452.         cx%(spieler)=zx:cy%(spieler)=zy:mm%(spieler)=bldnr
  453.       ELSE
  454.         PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET      
  455.       END IF
  456.     ELSE
  457.       PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET      
  458.     END IF
  459.     GOSUB groclear
  460.     RETURN
  461.   END IF
  462.   IF zgw>=ma%(f%) THEN tsabfr
  463.                                                   
  464.   IF k$=CHR$(28) AND zy>0 THEN 
  465.     fg%=fig%(zx,zy-1):sr%=spar%(zx,zy-1)
  466.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN a
  467.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN a
  468.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  469.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  470.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  471.       GOTO E
  472.     END IF
  473.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN a 
  474.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  475. a:    IF (zy MOD 13<>0) THEN 
  476.         zy=zy-1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  477.       ELSE
  478.         zy=zy-1:GOSUB mapr:bldnr=bldnr+3:Mapon bldnr
  479.       END IF
  480.     END IF 
  481.   END IF   
  482.  
  483.   IF k$=CHR$(29) AND zy<38 THEN
  484.     fg%=fig%(zx,zy+1):sr%=spar%(zx,zy+1)
  485.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48  AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN b 
  486.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN b
  487.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  488.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  489.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  490.       GOTO E
  491.     END IF    
  492.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN b
  493.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  494. b:    IF ((zy+1) MOD 13<>0) THEN
  495.         zy=zy+1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  496.       ELSE
  497.         zy=zy+1:GOSUB mapr:bldnr=bldnr-3:Mapon bldnr
  498.       END IF
  499.     END IF 
  500.   END IF   
  501.  
  502.   IF k$=CHR$(30) AND zx<38 THEN
  503.     fg%=fig%(zx+1,zy):sr%=spar%(zx+1,zy)
  504.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN c 
  505.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN c
  506.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  507.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  508.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  509.       GOTO E
  510.     END IF
  511.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN c
  512.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  513. c:    IF ((zx+1) MOD 13<>0) THEN 
  514.         zx=zx+1:GOSUB mapr:Zeigerset zx,zy,bldnr
  515.       ELSE 
  516.         zx=zx+1:GOSUB mapr:bldnr=bldnr+1:Mapon bldnr
  517.       END IF
  518.     END IF
  519.   END IF
  520.  
  521.   IF k$=CHR$(31) AND zx>0 THEN
  522.     fg%=fig%(zx-1,zy):sr%=spar%(zx-1,zy)
  523.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN d 
  524.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN d
  525.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  526.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  527.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  528.       GOTO E
  529.     END IF
  530.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN d
  531.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  532. d:    IF (zx MOD 13<>0) THEN 
  533.         zx=zx-1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  534.       ELSE
  535.         zx=zx-1:GOSUB mapr:bldnr=bldnr-1:Mapon bldnr
  536.       END IF
  537.     END IF
  538.   END IF
  539.  
  540.   IF UCASE$(k$)="F" AND fig%(zx,zy)=0 THEN
  541.     fg%=fig%(zxalt,zyalt):sr%=spar%(zx,zy)
  542.     IF (bi%(fg%)=5 OR bi%(fg%)=14) THEN
  543.       FOR i=800 TO 100 STEP -20
  544.         SOUND i,1,200,0:SOUND i+10,1.5,200,1
  545.       NEXT i              
  546.       IF sr%=6 OR sr%=4 THEN
  547.         beweg%(fg%)=beweg%(fg%)+1:tza=tza+1
  548.         spar%(zx,zy)=0
  549.         IF sr%=6 AND zx>17 AND zx<21 THEN spar%(zx,zy)=1 
  550.       END IF
  551.     END IF
  552.     PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,spar%(zx,zy)+18),PSET
  553.     IF mpjn=1 THEN zx=zxalt:zy=zyalt:Mapon bldnralt:bldnr=bldnralt:mpjn=0:bgl=0
  554.     PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET
  555.     GOSUB groclear
  556.     RETURN
  557.   END IF
  558.  
  559.   IF UCASE$(k$)="S" AND fig%(zx,zy)=0 THEN
  560.     fg%=fig%(zxalt,zyalt):sr%=spar%(zx,zy)
  561.     IF (bi%(fg%)=8 OR bi%(fg%)=17) AND sr%=3 AND st%(fg%)>8 THEN
  562.       FOR i=800 TO 100 STEP -20
  563.         SOUND i,1,200,0:SOUND i+10,1.5,200,1
  564.       NEXT i        
  565.       spar%(zx,zy)=0
  566.       PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,18),PSET
  567.       st%(fg%)=st%(fg%)-8
  568.       beweg%(fg%)=beweg%(fg%)+1
  569.     END IF
  570.     bgl=0
  571.     IF mpjn=1 THEN zx=zxalt:zy=zyalt:Mapon bldnralt:bldnr=bldnralt:mpjn=0
  572.     PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET     
  573.     GOSUB groclear
  574.     RETURN
  575.   END IF
  576.   GOTO tsabfr
  577.  
  578. mapr:
  579.   IF NOT (bi%(f%)=6 OR bi%(f%)=15) AND spar%(zx,zy)=2 THEN zgw=zgw+1
  580.   IF NOT (bi%(f%)=6 OR bi%(f%)=15) AND spar%(zx,zy)=5 THEN zgw=zgw+2
  581.   IF (bi%(f%)<>8 AND bi%(f%)<>17) OR ((bi%(f%)=8 OR bi%(f%)=17) AND spar%(zx,zy)<>3) THEN zgw=zgw+1 :ELSE bgl=1
  582.   mclr 16,15:LOCATE 17,14
  583.   IF zgw>=ma%(f%) THEN
  584.     Shadow " 0",9,1,9,0,0,0
  585.   ELSE
  586.     Shadow STR$(ma%(f%)-zgw),9,1,9,0,0,0
  587.   END IF
  588.   IF (spieler=0 AND fig%(zx,zy)<48 AND fig%(zx,zy)>0) OR (spieler=1 AND fig%(zx,zy)>47) THEN
  589.     LINE (5,160)-STEP(160,30),0,bf
  590.     LOCATE 21,1:Shadow nam$(bi%(fig%(zx,zy))),9,1,9,0,0,0
  591.     LOCATE 23,1:Shadow "Stärke  :  "+STR$(st%(fig%(zx,zy))),9,1,9,0,0,0
  592.   ELSE
  593.     LINE (5,160)-STEP(160,30),0,bf      
  594.   END IF
  595.   RETURN  
  596.  
  597. gefecht:
  598.   minsta%=3:minstb%=3:freundkill=0:feindkill=0
  599.   IF st%(f%)<minsta% THEN minsta%=INT(st%(f%)/2+0.5)
  600.   IF st%(fig%(zx,zy))<minstb% THEN minstb%=INT(st%(fig%(zx,zy))\2+0.5)   
  601.   ha%=INT(RND(1)*INT(st%(f%)/3))+minsta%:hv%=INT(RND(1)*INT(st%(fig%(zx,zy))/4))+minstb%
  602.   st%(fig%(zx,zy))=st%(fig%(zx,zy))-ha%
  603.   IF st%(fig%(zx,zy))<=0 THEN
  604.     LINE (5,160)-STEP(160,30),0,bf 
  605.     PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,spar%(zx,zy)+18),PSET
  606.     IF fig%(zx,zy)=46 THEN win=1
  607.     IF fig%(zx,zy)=93 THEN win=2
  608.     SOUND 250,4.5,200,0:SOUND 260,4.5,200,1    
  609.     fig%(zx,zy)=0:IF spieler=0 THEN gegner=1 :ELSE gegner=0
  610.     fganz(gegner)=fganz(gegner)-1:feindkill=1
  611.     IF fganz(gegner)=0 THEN win=spieler   
  612.     RETURN
  613.   END IF
  614.   mclr 22,12:LOCATE 23,11:Shadow STR$(st%(fig%(zx,zy))),9,1,9,0,0,0
  615.   IF wa%(fig%(zx,zy))<ABS(zx-zxalt)+ABS(zy-zyalt) OR spar%(zxalt,zyalt)=3 THEN RETURN
  616.   st%(f%)=st%(f%)-hv% 
  617.   IF st%(f%)<=0 THEN 
  618.     IF mpjn=0 THEN PUT((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,spar%(zxalt,zyalt)+18),PSET
  619.     IF fig%(zxalt,zyalt)=46 THEN win=1
  620.     IF fig%(zxalt,zyalt)=93 THEN win=2
  621.     SOUND 250,4.5,200,0:SOUND 260,4.5,200,1   
  622.     fig%(zxalt,zyalt)=0:IF spieler=0 THEN gegner=1 :ELSE gegner=0
  623.     fganz(spieler)=fganz(spieler)-1:freundkill=1
  624.     IF fganz(spieler)=0 THEN win=gegner 
  625.     RETURN
  626.   END IF
  627.   mclr 7,13:LOCATE 8,12:Shadow STR$(st%(f%)),9,1,9,0,0,0
  628.   RETURN
  629.  
  630. moveclr:
  631.   FOR i=1 TO 94
  632.     beweg%(i)=0
  633.   NEXT i
  634. RETURN
  635.  
  636. speichern:
  637.   turn=spieler
  638.   OPEN "Eriador.Spiel" FOR OUTPUT AS 1
  639.     FOR j=0 TO 38
  640.       FOR i=0 TO 38
  641.         PRINT #1,MKI$(spar%(i,j));
  642.         PRINT #1,MKI$(fig%(i,j));
  643.       NEXT i
  644.     NEXT j
  645.     FOR i=1 TO 94
  646.       PRINT #1,MKI$(st%(i));
  647.       PRINT #1,MKI$(beweg%(i));
  648.     NEXT i
  649.     PRINT #1,MKI$(turn)
  650.     FOR i=0 TO 1
  651.       PRINT #1,MKI$(cx%(i));
  652.       PRINT #1,MKI$(cy%(i));
  653.       PRINT #1,MKI$(mm%(i));
  654.     NEXT    
  655.   CLOSE 1
  656.   RETURN
  657.  
  658. winscreen:
  659.   OBJECT.OFF 1
  660.   GOSUB farbenaus
  661.   CLS
  662.   Diskfont "garnet",16
  663.   LINE (150,6)-(492,39),1,bf
  664.   LINE (154,2)-(488,43),1,bf
  665.   LINE (150,6)-(492,39),6,b
  666.   LINE (154,2)-(488,43),7,b
  667.   LOCATE 3,12
  668.   Shadow "Kampf um Eriador",12,2,19,0,0,0
  669.   Diskfont "garnet",9
  670.   IF win=2 THEN
  671.     LOCATE 12,7:Shadow "Der helle König konnte die Schlacht für sich entscheiden !",9,1,9,0,0,0
  672.     LOCATE 14,2:Shadow "Das Gute hat gesiegt und das Böse wurde aus der Welt vertrieben.",9,1,9,0,0,0
  673.     FOR i=100 TO 1000 STEP 20
  674.       SOUND i,1,200,0:SOUND i+10,1.5,200,1
  675.     NEXT i        
  676.   ELSE
  677.     LOCATE 12,1:Shadow "Der dunkle König ist auch in der letzten Schlacht siegreich geblieben !",9,1,9,0,0,0
  678.     LOCATE 14,3:Shadow "Und so versank die Welt für den Rest des Zeitalters im Schatten.",9,1,9,0,0,0
  679.     FOR i=800 TO 100 STEP -20
  680.       SOUND i,1,200,0:SOUND i+10,1.5,200,1
  681.     NEXT i        
  682.   END IF
  683.   LOCATE 17,11:Shadow "Wünschen Sie, eine weitere Partie zu spielen ?",9,1,9,0,0,0
  684.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  685.   k$=UCASE$(INKEY$)
  686.   WHILE k$<>"J" AND k$<>"N"
  687.     k$=UCASE$(INKEY$)
  688.   WEND
  689.   IF k$="J" THEN RUN
  690.   WINDOW CLOSE 2:SCREEN CLOSE 1
  691.   SYSTEM
  692.   
  693. TitleScreen:  
  694.   GOSUB farbenaus
  695.   CLS
  696.   LINE (150,6)-(492,39),1,bf
  697.   LINE (154,2)-(488,43),1,bf
  698.   LINE (150,6)-(492,39),6,b
  699.   LINE (154,2)-(488,43),7,b
  700.   LOCATE 3,12
  701.   Shadow "Kampf um Eriador",12,2,19,0,0,0
  702.   Diskfont "garnet",9
  703.  
  704.   RESTORE data1:endw=23
  705.   IF loaded=1 THEN endw=22
  706.   FOR i=12 TO endw
  707.     LOCATE i,12:READ tx$:Shadow tx$,9,1,9,0,0,0
  708.   NEXT i
  709.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  710.   IF loaded=1 THEN warten(10):RETURN
  711.   
  712. abfr:
  713.   tx$=INKEY$
  714.   IF UCASE$(tx$)="N" THEN RETURN
  715.   IF UCASE$(tx$)<>"J" THEN abfr
  716. data1:
  717.   DATA "Ein Fantasy - Strategiespiel für zwei Personen"," "
  718.   DATA "     nach einer Grundidee von Dirk Meier"," "," "
  719.   DATA "       Entwickelt und programmiert von"," "
  720.   DATA "    Ralf Böwing     und     Roland Hartz"," "," "," "
  721.   DATA "        Wünschen Sie eine Einleitung ?"
  722.   
  723.   GOSUB farbenaus
  724.   LINE (0,80)-(639,255),0,bf
  725.   RESTORE data2
  726.   FOR i=9 TO 26 STEP 2
  727.     LOCATE i,2:READ tx$:Shadow tx$,9,1,9,0,0,0
  728.   NEXT i
  729.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  730. data2:
  731.   DATA "In den jungen Jahren von Eglador entbrannte zum ersten Mal der"
  732.   DATA "Kampf zwischen den Herrschern des Lichts und der Finsternis."
  733.   DATA "Bisher konnte jedoch noch keine der beiden Seiten einen end-" 
  734.   DATA "gültigen Sieg erringen."
  735.   DATA " "
  736.   DATA "Aber im Jahre 6735 des zweiten Zeitalters bahnt sich das zukunfts-"
  737.   DATA "bestimmende letzte Gefecht zwischen den beiden Gegnern an. Im"
  738.   DATA "Lande Eriador entscheidet sich zwischen den verbleibenden Legionen"
  739.   DATA "das Schicksal von Eglador..."
  740.   warten (20)
  741. gh: 
  742.   CLS:GOSUB farbenaus
  743.   LOCATE 3,2:Shadow "Die helle Legion :",9,1,9,0,0,0
  744.   LOCATE 3,38:Shadow "Die dunkle Legion :",9,1,9,0,0,0
  745.   i=0
  746.   RESTORE fig
  747.   FOR y%=39 TO 224 STEP 21
  748.     LINE (18,y%+2)-(53,y%+19),1,bf
  749.     PUT (14,y%),ob%(0,i),PSET
  750.     READ d$:Shadow d$,9,1,9,1,72,y%+11
  751.     i=i+1
  752.   NEXT y%
  753.   FOR y%=39 TO 224 STEP 21
  754.     LINE (342,y%+2)-(375,y%+19),1,bf
  755.     PUT (338,y%),ob%(0,i),PSET
  756.     READ d$:Shadow d$,9,1,9,1,400,y%+11
  757.     i=i+1
  758.   NEXT y%
  759. fig:  
  760.   DATA "3 Axtmänner","3 Schwertkämpfer","2 Legionäre","2 Ritter","2 Schützen","Belagerungsmannschaft"
  761.   DATA "2 Adler","König des Lichts","Magier"
  762.   DATA "3 Keulenmänner","3 Schwertkämpfer","2 Legionäre","2 Ritter","2 Schützen","Belagerungsmannschaft"
  763.   DATA "2 Drachen","König der Finsternis","Magier"
  764.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  765.   warten (40)
  766.   GOSUB farbenaus
  767.   CLS
  768.   Shadow "Jeder Spieler verfügt über drei der gezeigten Legionen - es muß",9,1,9,1,15,31
  769.   Shadow "wohl nicht ausdrücklich erwähnt werden, daß jede Seite nur EINEN",9,1,9,1,15,45  
  770.   Shadow "König bzw. Magier hat !",9,1,9,1,15,59
  771.   Shadow "Im Folgenden sind die Landschaftselemente dargestellt :",9,1,9,1,15,88
  772.   RESTORE scene:i=18
  773.   FOR y%=107 TO 212 STEP 21
  774.     LINE (50,y%+2)-(83,y%+19),1,bf
  775.     PUT (46,y%),ob%(0,i),PSET
  776.     READ d$:Shadow d$,9,1,9,1,114,y%+11
  777.     i=i+1
  778.   NEXT y%  
  779. scene:
  780.   DATA "Ebene  -  begehbar von allen","Wasser  -  nur von Adlern und Drachen überwindbar"
  781.   DATA "Wald  -  mindert Marschgeschwindigkeit um 1 Feld","Gebirge  -  siehe Wasser"
  782.   DATA "Bauwerke  -  kann man mit Katapulten zerstören","Sumpf  -  mindert Marschgeschwindigkeit um 2 Felder"
  783.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  784.   warten (35)
  785.   GOSUB farbreset
  786.   CLS
  787.   LOCATE 2,1:Shadow "Hier die Residenz",9,1,9,0,0,0
  788.   LOCATE 4,1:Shadow "   des hellen",9,1,9,0,0,0
  789.   LOCATE 6,1:Shadow "     Königs :",9,1,9,0,0,0  
  790.   zx=0:zy=0:Mapon (7):warten (20)
  791.   CLS
  792.   LOCATE 24,1:Shadow "Hier die Residenz",9,1,9,0,0,0
  793.   LOCATE 26,1:Shadow "   des dunklen",9,1,9,0,0,0
  794.   LOCATE 28,1:Shadow "     Königs :",9,1,9,0,0,0  
  795.   zx=38:zy=38:Mapon (3):warten (20)
  796.   einl=1
  797.   RETURN
  798.  
  799. REM *** Spielbeginn ***
  800.  
  801. Spiel:
  802.   IF einl=0 THEN CLS:GOSUB farbreset:Mapon(3) :ELSE GOSUB groclear
  803.   IF loaded=0 THEN
  804.     Shadow "               Der dunkle König beginnt den Feldzug !",9,1,9,1,2,248
  805.   ELSE
  806.     IF turn=0 THEN zw$="dunkle König" :ELSE zw$="helle König"
  807.     Shadow "               Der "+zw$+" führt den Feldzug fort !",9,1,9,1,2,248
  808.   END IF
  809.   warten (2):GOSUB kleinclear
  810.   zx=38:zy=38:bldnr=3:Zeigerset zx,zy,bldnr:spieler=turn
  811.   cx%(0)=38:cy%(0)=38:cx%(1)=0:cy%(1)=0:mm%(0)=3:mm%(1)=7:win=0
  812.  
  813. REM *** Hauptschleife des Spiels ***
  814.  
  815. Haupt:
  816.   tza=0
  817.   IF fganz(spieler)<15 THEN tzagrenze=fganz(spieler) :ELSE tzagrenze=15
  818.   SOUND 270,4.5,200,0:SOUND 280,4.5,200,1
  819.   IF spieler=0 THEN
  820.     Shadow "                          Zugphase dunkler König",9,1,9,1,2,248:offs=48
  821.   ELSE
  822.     Shadow "                          Zugphase heller König",9,1,9,1,2,248:offs=1
  823.   END IF
  824.   warten(2):GOSUB kleinclear
  825.   zx=cx%(spieler):zy=cy%(spieler)
  826.   IF mm%(spieler)<>bldnr THEN Mapon mm%(spieler):bldnr=mm%(spieler)
  827.   Zeigerset zx,zy,bldnr:OBJECT.ON 1:GOSUB groclear:warten(1)
  828. l: 
  829.   GOSUB tasten
  830.   IF spar%(0,1)=4 AND spar%(1,0)=4 AND fganz(1)=1 THEN win=1
  831.   IF spar%(37,38)=4 AND spar%(38,37)=4 AND fganz(0)=1 THEN win=2
  832.   IF win<>0 THEN winscreen 
  833.   IF tza<tzagrenze THEN GOTO l
  834.   GOSUB moveclr
  835.   IF spieler=0 THEN spieler=1 :ELSE spieler=0
  836.   GOTO Haupt
  837.  
  838.